package ibm.websphere.monitor.common;

import java.util.List;

import org.hibernate.jdbc.Work;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * <pre>
 * @Description 菜单操作的DOMAIN
 * </pre>
 *
 * @copyright www.timotai.net
 * @author 这家伙真懒
 * @date 2016-1-12
 */

public class BaseDomain {
    /**
     * 初始化daohelp
     **/
    @Autowired
    protected DaoHelper daohelp;


    /**
     * <pre>
     * 保存该对象
     * </pre>
     *
     * @param o
     */
    public void save(Object o) {
        daohelp.save(o);
    }

    /**
     * <pre>
     * 	更新该对象
     * </pre>
     *
     * @param o
     */
    public void update(Object o) {
        daohelp.update(o);
    }

    /**
     * <pre>
     * 	保存该对象
     * </pre>
     *
     * @param o
     */
    public void saveOrUpdate(Object o) {
        daohelp.saveOrUpdate(o);
    }

    /**
     * <pre>
     * 	删除该对象
     * </pre>
     *
     * @param o
     */
    public void delete(Object o) {
        daohelp.delete(o);
    }

    /**
     * <pre>
     * 	通过ID删除该对象
     * </pre>
     *
     * @param o
     * @param id
     */
    public void delete(Class<?> o, Long id) {
        daohelp.delete(o, id);
    }

    /**
     * <pre>
     * 根据实体名查询所有对象信息
     * </pre>
     *
     * @param entityName
     * @return
     */
    public List<?> findAll(String entityName) {
        List<?> list = null;
        list = daohelp.findAll(entityName);
        return list;
    }

    /**
     * <pre>
     * 通过ID加载该对象
     * </pre>
     *
     * @param _class
     * @param id
     * @return
     */
    public Object get(Class<?> _class, Long id) {
        return daohelp.get(_class, id);
    }

    /**
     * <pre>
     * 	通过ID加载该对象
     * </pre>
     *
     * @param _class
     * @param id
     * @return
     */
    public Object load(Class<?> _class, Long id) {
        return daohelp.load(_class, id);
    }

    /**
     * <pre>
     * 自己可以实现该接口
     * </pre>
     *
     * @param w
     */
    public void doWork(Work w) {
        daohelp.doWork(w);
    }

    /**
     * <pre>
     * 根据实体名和条件查询对象集合
     * </pre>
     *
     * @param entityName
     * @param condition
     * @return
     */
    public List<?> findByCondition(String entityName, String condition) {
        return daohelp.findByCondition(entityName, condition);
    }

    /**
     * <pre>
     * 根据条件查询对象集合
     * </pre>
     *
     * @param condition
     * @return
     */
    public List<?> findByCondition(String condition) {
        return daohelp.findByCondition(condition);
    }

    /**
     * <pre>
     * 根据条件查询对象集合
     * </pre>
     *
     * @param condition
     * @return
     */
    public List<?> findByConditionSize(String condition) {
        return daohelp.findByConditionSize(condition);
    }


}
